#include <iostream>
#include <thread>
using namespace std;

void f() { cout << "Hello" << flush; } // 函数
struct F                               // 函数对象
{
    void operator()() { cout << "Parallel World!\n<<flush"; } // F调用运算符
};

void user()
{
    thread t1{f};   // f()在独立的线程中执行
    thread t2{F()}; // F()()在独立的线程中执行

    t1.join(); // 等待t1完成
    t2.join(); // 等待t2完成
}

int main(int argc, char const *argv[])
{
    user();
    return 0;
}
/*
该例程并没有复现出教材中的结果，貌似可以正确调度两个线程切换。
并不会出现“奇怪的”输出，没有找到原因！
*/